package com.example.batch.monitor.core;

import io.micrometer.core.instrument.MeterRegistry;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;

/**
 * 基础指标收集器
 * 提供通用的指标收集功能
 */
@Slf4j
public abstract class MetricsCollector implements MeterRegistryCustomizer<MeterRegistry> {

    /** 指标注册表 */
    protected final MeterRegistry registry;
    
    /** 应用名称,用于标记指标来源 */
    protected final String applicationName;
    
    /**
     * 构造函数
     * @param registry 指标注册表
     * @param applicationName 应用名称
     */
    protected MetricsCollector(MeterRegistry registry, String applicationName) {
        this.registry = registry;
        this.applicationName = applicationName;
    }

    @Override
    public void customize(MeterRegistry registry) {
        // 为所有指标添加通用标签
        registry.config()
            .commonTags("application", applicationName);
    }
    
    /**
     * 清理指标
     * 在应用关闭时调用,清理注册的指标
     */
    public void clear() {
        registry.clear();
    }
} 